<HTML><HEAD><TITLE>#/\(?X, ?Y, ?B)</TITLE>
</HEAD><BODY>[ <A HREF="index.html">library(fd)</A> | <A HREF="../../index.html">Reference Manual</A> | <A HREF="../../fullindex.html">Alphabetic Index</A> ]
<H1>#/\(?X, ?Y, ?B)</H1>
The constraint X #/\ Y has the truth value B.


<DL>
<DT><EM>?X</EM></DT>
<DD>A constraint expression.
</DD>
<DT><EM>?Y</EM></DT>
<DD>A constraint expression.
</DD>
<DT><EM>?B</EM></DT>
<DD>A variable with domain 0..1.
</DD>
</DL>
<H2>Description</H2>
   This predicate is an evaluation constraint:  it succeeds if and only if
   the truth value of its associated constraint (the constraint with arity
   one less and the same arguments except for B) is equal to B, where the
   value 0 means false and 1 true.  This constraint can be used both to
   test the validity of the associated constraint (entailment test) and to
   impose this constraint or its negation.  For the former, B will be
   instantiated as soon as either the associated constraint or its negation
   is subsumed by the current state of its domain variables.  For the
   latter, when B is instantiated, then depending on its value, either the
   associated constraint or its negation will be imposed on its arguments.

<P>
   Boolean expressions containing arithmetic constraints are converted by
   the system to a series of evaluation constraints and arithmetic
   constraints in a way similar to arithmetic evaluation, e.g.

<P>
<PRE>
    X #&gt; Y #=&gt; T #&gt; V #/\ E #= F
</PRE>
   is transformed into

<P>
<PRE>
    #&gt;(X, Y, B1),
    #&gt;(T, V, B2),
    #=(E, F, B3),
    #=(B2 + B3, 2, B4),
    B1 #&lt;= B4.      % i.e.  if B1 then B4
</PRE>

<H3>Fail Conditions</H3>
   Fails if B is not the truth value of the associated constraint.


<H3>Resatisfiable</H3>
   No.
<H2>See Also</H2>
<A HREF="../../lib/fd/HRP-2.html">#\+ / 2</A>, <A HREF="../../lib/fd/HRF-3.html">#\/ / 3</A>, <A HREF="../../lib/fd/HEG-3.html">#=> / 3</A>, <A HREF="../../lib/fd/HLEG-3.html">#<=> / 3</A>, <A HREF="../../lib/fd/isd-2.html">isd / 2</A>
</BODY></HTML>
